Report.render   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 20
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 20
rs 9.4
c 0
b 0
f 0
cc 1
1
/*eslint max-len: ["error", { "code": 150 }]*/
2
3
import React, { Component } from 'react';
4
import PropTypes from 'prop-types';
5
import { NavLink } from 'react-router-dom';
6
import ReactMarkdown from 'react-markdown/with-html';
7
import base from '../../config/api.js';
8
let api = base.api();
9
10
const json = require('../../assets/json/report.json');
11
12
class Report extends Component {
13
    static propTypes = {
14
        match: PropTypes.object.isRequired,
15
        location: PropTypes.object.isRequired,
16
        history: PropTypes.object.isRequired
17
    };
18
    constructor(props) {
19
        super(props);
20
        this.getContent = this.getContent.bind(this);
21
        this.state = {
22
            reports: json,
23
            report: "",
24
            kmom: this.props.match.params.kmom
25
        };
26
        this.content = "";
27
    }
28
29
    componentDidMount() {
30
        this.getContent(this.state.kmom);
31
    }
32
33
    // eslint-disable-next-line
34
    UNSAFE_componentWillReceiveProps(newProps) {
35
        this.setState({
36
            kmom: newProps.match.params.kmom
37
        }, () => this.getContent(this.state.kmom));
38
    }
39
40
    getContent(kmom) {
41
        let report = kmom;
42
43
        fetch(api + `/reports/week/${report}`)
44
            .then(res => res.json())
45
            .then(res => this.setState({
46
                report: {
47
                    title: res.data.report.title,
48
                    content: res.data.report.content
49
                }
50
            }));
51
    }
52
53
    render() {
54
        return (
55
            <main>
56
                <nav className="navbar_main under">
57
                    <ul>
58
                        <li><NavLink to="/reports/week/1" activeClassName="selected">Kmom01</NavLink></li>
59
                        <li><NavLink to="/reports/week/2" activeClassName="selected">Kmom02</NavLink></li>
60
                        <li><NavLink to="/reports/week/3" activeClassName="selected">Kmom03</NavLink></li>
61
                        <li><NavLink to="/reports/week/4" activeClassName="selected">Kmom04</NavLink></li>
62
                        <li><NavLink to="/reports/week/5" activeClassName="selected">Kmom05</NavLink></li>
63
                        <li><NavLink to="/reports/week/6" activeClassName="selected">Kmom06</NavLink></li>
64
                        <li><NavLink to="/reports/week/10" activeClassName="selected">Kmom07-10</NavLink></li>
65
                    </ul>
66
                </nav>
67
                <h1>{ this.state.report.title }</h1>
68
                <div>
69
                    <ReactMarkdown source={ this.state.report.content } escapeHtml={false} />
70
                </div>
71
            </main>
72
        );
73
    }
74
}
75
76
export default Report;
77